package tcpandudp;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

//服务端
public class TcpServerDemo01 {
    public static void main(String[] args) {
        ServerSocket serverSocket = null;
        Socket socket = null;
        InputStream is = null;
        ByteArrayOutputStream baos = null;

        try {
            //1.建立一个地址
            serverSocket = new ServerSocket(9999);
            int i = 0;
            while (true){
                //2.等待客户端连接过来
                System.out.println("等待客户端连接");
                socket = serverSocket.accept();
                //3.读取客户端的信息
                i++;
                is =socket.getInputStream();
                System.out.println("读取信息成功"+i);
                baos = new ByteArrayOutputStream();
                //创建一个接收数据的byte[]数组，及数组的有效长度len
                byte[] buffer = new byte[1024];
                int len;
                while ((len=is.read(buffer))!=-1){
                    baos.write(buffer,0,len);
                }
                System.out.println(baos.toString());
            }
        }
           /*//一种方法
           //创建一个接收数据的byte[]数组，及数组的有效长度len
            byte[] buffer = new byte[1024];
            int len;
            while ((len = is.read(buffer))!=-1){
                String msg = new String(buffer,0,len);
                System.out.println(msg);
            }*/
        //管道流获得信息

        catch (IOException e) {
            e.printStackTrace();
        }finally {
            //关闭资源,先开后关，后开先关。
            if (baos!=null){
                try {
                    baos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (is!=null){
                try {
                    is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (socket!=null){
                try {
                    socket.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (serverSocket!=null){
                try {
                    serverSocket.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
